import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

import {addLayoutRoutes} from "@/router/routerEvent.js";
import {token} from "@/utils/tools.js";

Vue.config.productionTip = false


import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import '@/assets/sass/el-reset.scss'; // 引入element-ui自己修改了的样式
Vue.use(ElementUI);


// -------------------------------------------
// 公共mixin
import mixins from './mixins';
Vue.mixin(mixins);

// 调用接口方法
import {get, post, postForm, postDelete, put} from "@/config/request.js";
Vue.prototype.$get = get;
Vue.prototype.$post = post;
Vue.prototype.$postForm = postForm;
Vue.prototype.$postDelete = postDelete;
Vue.prototype.$put = put;

// 公共组件
import manager from '@/components/manager.js';
Vue.use(manager);

// 公共变量
import $global from '@/global/index.js';
Vue.prototype.$g = $global;


/**
 * 如果用户刷新页面,重新添加菜单权限;
 */
var menu = store.getters.GET_PERMISSIONLIST;
if (menu && menu.length) {
  addLayoutRoutes(menu);
}


// 进入路由前验证
// 1.是否存在权限列表，不存在获取列表
router.beforeEach((to, from, next) => {
  // 判断是否需要权限列表
  if (['/login'].indexOf(to.path) != -1) {
    next();

  // 判断有没有token，判断有没有权限
  } else if (!token.get()) {
    next('/login');

  } else {
    // 添加页面到tab列表
    store.commit('ADD_TAB_PAGES', to);
    // 显示to页面
    next();
  }
})



new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
